package com.atguigu.team.view;

import com.atguigu.team.domain.Employee;
import com.atguigu.team.domain.Programmer;
import com.atguigu.team.service.CompanyService;
import com.atguigu.team.service.TeamException;
import com.atguigu.team.service.TeamService;
 
public class TeamView {
	
	/**
	 * 负责处理和公司员工相关的业务
	 */
	private CompanyService companyService = new CompanyService();
	/**
	 * 负责处理和团队相关的业务
	 */
	private TeamService teamService = new TeamService();
	
	/**
	 * 进入主菜单方法, 相当于入口方法
	 */
	public void enterMainMenu() {
		boolean loopFlag = true;
		while (loopFlag) {
			listAllEmployees();
			System.out.print("1-团队列表  2-添加团队成员  3-删除团队成员 4-退出   请选择(1-4) : ");
			// 获取用户的键盘输入
			char choice = TSUtility.readMenuSelection();
			// 对用户输入作出分支 
			switch (choice) {
				// 如果是'1' 调用 listTeam()
				case '1' : listTeam(); break;
				// 如果是'2' 调用 addMember()
				case '2' : addMember(); break;
				// 如果是'3' 调用 deleteMember()
				case '3' : deleteMember(); break;
				// 如果是'4' 设置循环变量为false
				case '4' : loopFlag = false; break;
			}
		}
	}
	
	/**
	 * 列出公司所有员工
	 */
	private void listAllEmployees() {
		System.out.println("-------------------------------------开发团队调度软件--------------------------------------");
		System.out.println();
		System.out.println("ID\t姓名\t年龄\t工资\t职位\t状态\t奖金\t股票\t领用设备");
		Employee[] allEmps = companyService.getAllEmployees();
		for (int i = 0; i < allEmps.length; i++) {
			System.out.println(allEmps[i]);
		}
		System.out.println("---------------------------------------------------------------------------------------------------");
	}
	
	/**
	 * 添加成员到team中
	 * @throws  
	 */
	private void addMember() {
		System.out.println("---------------------添加成员---------------------");
		System.out.print("请输入要添加的员工ID : ");
		// 获取用户从键盘输入的ID
		int id = TSUtility.readInt();
		try {
			// 从companyService中获取对象,依据是ID号
			Employee employee = companyService.getEmployee(id);
			// 把获取到的对象添加到teamService中, 调用方法addMember(Employee emp)
			teamService.addMember(employee);
			System.out.println("添加成功!");
		} catch (TeamException e) {
			System.out.println("添加失败, 原因 : " + e.getMessage());
		}
		// 调用工具类的readReturn()
		TSUtility.readReturn();
	}
	
	/**
	 * 从团队中删除成员
	 */
	private void deleteMember() {
		System.out.println("---------------------删除成员---------------------");
		System.out.print("请输入要删除员工的TID : ");
		int id = TSUtility.readInt();
		System.out.print("确认是否删除(Y/N) :");
		char confirm = TSUtility.readConfirmSelection();
		if (confirm == 'Y') {
			try {
				teamService.removeMember(id);
				System.out.println("删除成功!");
			} catch (TeamException e) {
				System.out.println("删除失败, 原因 : " + e.getMessage());
			}
			TSUtility.readReturn();
		}
	}
	
	/**
	 * 列出团队成员
	 */
	private void listTeam() {
		System.out.println("--------------------团队成员列表---------------------");
		System.out.println();
		System.out.println("TID/ID\t姓名\t年龄\t工资\t职位\t奖金\t股票");
		Programmer[] team = teamService.getTeam();
		for (Programmer programmer : team) {
			System.out.println(programmer.toString2());
		}
		System.out.println("-----------------------------------------------------");
	}
}
